/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.afcepf.atod16.groupe1.projet1.service;

import fr.afcepf.atod16.groupe1.projet1.dto.client.DtoCompteClient;
import fr.afcepf.atod16.groupe1.projet1.dto.commande.DtoCommande;
import fr.afcepf.atod16.groupe1.projet1.dto.commande.DtoLigneCommande;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Stateless;
import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.SimpleEmail;

/**
 *
 * @author stagiaire
 */
@Stateless
public class ServiceMail implements ServiceMailLocal{
    
    final String SMTP_HOST = "smtp.googlemail.com";
    final int PORT_NUMBER = 465;
    final String USER_SMTP_MAIL =  "afcepf.atod16";
    final String PASS_SMTP_MAIL = "atod16.afcepf";
    final String EMAIL_SITE = "groupe1.atod16@Ecommerce.com";
    
    
    @Override
    public Boolean envoyerMailCreationCompte(DtoCompteClient client) {
        String sujet = "Votre compte a bien été crée!";
        String message = "<html>Felicitations! Votre compte a bien été crée <br>"
                      + "Votre login de connexion = "+client.getEmail()+"<br>"
                      + "Votre mot de passe = "+client.getPass()+"</html>";
         return envoyerMailHtml(sujet, message, client.getEmail());
    }

    @Override
    public Boolean envoyerMailRecuperationPass(DtoCompteClient client) {
         String sujet = "Recuperation du mot de passe";
        String message = "<html> Votre mot de passe est:"+client.getPass()+"</html>";
         return envoyerMailHtml(sujet, message, client.getEmail()); 
    }

    @Override
    public Boolean envoyerMailConfirmationCommande(DtoCommande commande) {
        String sujet = "Confirmation de la commande";
         String messageHtml = "<html> Votre commande a bien été enregistrée:";
                messageHtml += "<TABLE BORDER='1'>"+ 
                              "<CAPTION> Récapitulatif de la commande </CAPTION>" +
                                "<TR>"+ 
                                    "<TH> Reference </TH>"+ 
                                    "<TH> Quantité </TH> "+
                                    "<TH> Total </TH> "+
                                "</TR> ";
            List<DtoLigneCommande> lignes = commande.getLignes();
            int prixTotal = 0;
            
            //Affichage de chaque article de la commande.
            for(DtoLigneCommande ligne : lignes){
                messageHtml +=  "<TR>" ;
                messageHtml +=                    "<TD> "+ligne.getProduit().getCodeEAN13() +" </TD>";
                messageHtml +=                    "<TD> "+ligne.getQuantite()+" </TD> ";
                messageHtml +=                    "<TD> "+ligne.getQuantite() * ligne.getPrixUnitaire()+" </TD> ";
                messageHtml +=         "</TR> ";
                prixTotal += ligne.getQuantite() * ligne.getPrixUnitaire();
            }
            
            //Affichage des frais de livraison
             messageHtml +=  "<TR>" ;
                messageHtml +=                    "<TD> </TD>";
                messageHtml +=                    "<TD> Transport </TD> ";
                messageHtml +=                    "<TD> "+commande.getFraisLivraison()+" </TD> ";
                messageHtml +=         "</TR> ";
                prixTotal += commande.getFraisLivraison();
            messageHtml +=  "<TR>"+ 
                                    "<TD>  </TD>"+ 
                                    "<TD> Total </TD> "+
                                    "<TD> "+prixTotal+" </TD> "+
                                "</TR> ";
            
            messageHtml += "</TABLE></HTML>";
         return envoyerMailHtml(sujet, messageHtml, commande.getCompteClient().getEmail());          
    }
    
    public boolean envoyerMailHtml(String sujet, String message, String destinataire){
          Boolean reussite = true;
        try {
            HtmlEmail email = new HtmlEmail();
            email.setHostName(SMTP_HOST);
            email.setSmtpPort(PORT_NUMBER);
            email.setAuthenticator(new DefaultAuthenticator(USER_SMTP_MAIL, PASS_SMTP_MAIL));
            email.setSSLOnConnect(true);
            email.addTo(destinataire);
            email.setFrom(EMAIL_SITE);
            email.setSubject(sujet);

            // embed the image and get the content id
           // URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");
          //  String cid = email.embed(url, "Apache logo");
             
            email.setHtmlMsg(message);
            // set the alternative message
            email.setTextMsg("Votre client email ne supporte pas les messages html");

            // send the email
            email.send();
        } catch (EmailException ex) {
            Logger.getLogger(ServiceMail.class.getName()).log(Level.SEVERE, null, ex);
            reussite =false;
        }
        return reussite;
    }
    
}
